﻿
using Elysium.Demo.Service_Espana;
using SIIE_ERP.BaseDatos;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace Elysium.Demo.Ventas
{
    public class WebServicesClass
    {
        #region Constructor

        public WebServicesClass() 
        {

        }

        #endregion

        public static int GetNumeroTimbresGratis(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.GetNumeroTimbresGratis(RFC);
        }

        public static int GetNumeroTimbresPago(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.GetNumeroTimbresPago(RFC);
        }

        public static bool AnadirTimbres(string RFC, string key)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.AnadirTimbres(RFC, key);///STring llave , return boolean si se agregaron tiembres
        }

        public static bool CheckConnection()
        {
            try
            {   
                TimbrarServiceClient ws = new TimbrarServiceClient();
                return ws.CheckConnection();
            }
            catch (Exception Ex)
            {
                Console.Write(Ex.Message);
                return false;
            }            
        }

        public static int NumeroTimbres(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.NumeroTimbres(RFC);            
        }

        public static string TimbrarXML(Documentos_Id Tipo_Doc, int Id_Documento, string XML, string RFC,bool timbre)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.TimbrarCFDi(Tipo_Doc.GetHashCode(), Id_Documento, XML, RFC,timbre);                              
        }

        public static string DatosTA(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.ClavesTA(RFC);                              
        }
        
        public static string GetCurrentVersion()
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.GetCurrentVersion();
        }

        public static double GetSaldo_Telcel(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.GetSaldo_Telcel(RFC);
        }

        public static double GetSaldo_Otros(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.GetSaldo_Otros(RFC);
        }

        public static bool RegistrarPagoEMIDA(string RFC, bool EsTelcel, int Monto, string NumeroDocumento, string Fecha, string Banco)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.RegistrarPagoEMIDA(RFC, EsTelcel, Monto, NumeroDocumento, Fecha, Banco);
        }

        public static bool RecargaTA(bool EsTelcel, string RFC, string ProductID, string NumeroCelular, double MontoRecarga)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.RealizarRecargaTA(EsTelcel, RFC, ProductID, NumeroCelular, MontoRecarga);
        }

        public static bool InsertExcel_EMIDA(string RFC, string Datos_B4, string Datos_C4, string Datos_K4, string Datos_L4, string Datos_M4, string Datos_N4, string Datos_O4, string Datos_P4, string Datos_Q4, string Datos_R4, string Datos_S4, string Datos_T4, string Datos_U4, string Datos_V4, string Datos_X4, string Datos_Y4, string Datos_Z4, string Datos_AA4, string Datos_AB4, string Datos_AC4, string Datos_AD4, string Datos_AE4, string Datos_AF4, string Email)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.InsertExcel_EMIDA(RFC, Datos_B4, Datos_C4, Datos_K4, Datos_L4, Datos_M4, Datos_N4, Datos_O4, Datos_P4, Datos_Q4, Datos_R4, Datos_S4, Datos_T4, Datos_U4, Datos_V4, Datos_X4, Datos_Y4, Datos_Z4, Datos_AA4, Datos_AB4, Datos_AC4, Datos_AD4, Datos_AE4, Datos_AF4, Email);
        }

        public static bool CreateAndSavePay_PagoFacil
        (
            double monto,
            string RFC,
            string Nombre,
            string Apellidos,
            string Numero_Tarjeta,
            string CodigoSeguridad,
            string CP,
            string FechaVenc_mm,
            string FechaVenc_aa,
            string Telefono,
            string Celular,
            string Dir_Calle,
            string Dir_Colonia,
            string Dir_CiudadPueblo,
            string Estado,
            string Pais,
            string Descripcion_Pago
        )
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            
            return ws.CreateAndSavePay_PagoFacil
            (
                monto,
                RFC,
                Nombre,
                Apellidos,
                Numero_Tarjeta,
                CodigoSeguridad,
                CP,
                FechaVenc_mm,
                FechaVenc_aa,
                Telefono,
                Celular,
                Dir_Calle,
                Dir_Colonia,
                Dir_CiudadPueblo,
                Estado,
                Pais,
                Descripcion_Pago
            );
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="Llave"></param>
        /// <param name="RFC"></param>
        /// <returns></returns>
        /// 
        //para saber que tipo de licencia tiene la llave 
        public static string LicenciaKey
            (string Llave)
        { 
         TimbrarServiceClient ws = new TimbrarServiceClient();

         return ws.CheckKey(Llave);
           
        }
        public static string ActivateKey
        (
            string Llave,
            string RFC
        )
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.ActivateKey(Llave, RFC, true, false);
           /*POSIBLES  códigos de retorno
             * 
             * 
             * Code_AmpliaAnio   -->  Amplía un año la licencia del usuario al que se le establece la licencia.
             * 
             * Code_AmpliaMes    -->  Amplía un mes la licencia del usuario al que se le establece la licencia.
             * 
             * Code_AmpliaPerpetual -->  Amplía 200 años la licencia del usuario al que se le establece la licencia.
             * 
             * CodeError1        -->  La llave ya fue usada o es inválida
             * 
            */
        }

        public static int LicenciaTimbrado(string RFC)
        {
            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.NumeroTimbres(RFC);
        }
        public static void RestarTimbre(string RFC)
        { 
        
        }
        public static string fechaVencimiento(string RFC)
        {

            TimbrarServiceClient ws = new TimbrarServiceClient();
            return ws.FechaVencimientoTimbres(RFC);
        }

    }
}
